<?php

namespace app\pay\service;

use think\facade\Cache;
use think\facade\Config;

class PayService
{
    /**
     * 租户编号
     * @var string
     */
    protected string $appId;

    /**
     * 租户配置
     * @var array
     */
    protected array $appConfig;

    /**
     * payCacheKey
     * @var string
     */
    protected string $payCacheKey = 'PayService';

    /**
     * setAppId
     * 设置租户编号
     * @param string $appId
     * @return $this
     */
    public function setAppId(string $appId): PayService
    {
        $this->appId = $appId;
        return $this;
    }

    /**
     * createPayId
     * @param string $out_trade_no
     * @return string
     */
    protected function createWebPayId(string $out_trade_no): string
    {
        return md5($this->payCacheKey . $out_trade_no);
    }

    /**
     * createWebPayUrl
     * @param string $out_trade_no
     * @return string
     */
    protected function createWebPayUrl(string $out_trade_no): string
    {
        $appConfig = Config::get('app');
        return $appConfig['app_host'] . '/pay/jump/index?id=' . $this->createWebPayId($out_trade_no);
    }

    /**
     * createWebPayDataToCache
     * @param string $out_trade_no
     * @param string $payData
     * @return void
     */
    protected function createWebPayDataToCache(string $out_trade_no, string $payData)
    {
        Cache::set($this->createWebPayId($out_trade_no), $payData, 3600);
    }
}